//获取到数据库引用
const db = wx.cloud.database()

/*
* 添加操作
* @params   collection   类型：String  集合名称
            data        类型：Object   参数
*/
function add({ collection = "", data = {} }) {
   return db.collection(collection).add({
      data: data
   })
}

/*
* 获取数量
* @params   collection   类型：String  集合名称
            where        类型：Object   查询条件
*/
function count({ collection = "", where = {} }) {
   return db.collection(collection).where(where).count()

}

// function  get({collection="",where={},field="addtime",sort="asc"}){

//    return db.collection(collection).orderBy(field,sort).where(where).get()
// }

function get({ collection = "", where = {}, orderBy = { field: "addtime", sort: "desc" }, skip = 0, limit = 10,field={} }) {
   return db.collection(collection)
      .orderBy(orderBy.field, orderBy.sort)
      .skip(skip)
      .limit(limit)
      .where(where)
      .field(field)
      .get()
}

/*
*  获取某一条记录
   @params   collection    集合名称  类型String
              id          记录的id   类型String
*/
function getById({ collection = "", id = "" }) {
   return db.collection(collection).doc(id).get()
}

/**
 * 自增
 *   @params   collection   集合名称
 *             id           数据id
 *             count       每次增长数量  类型：Number
 * **/

function inc({ collection = "", id = "", count = 1, field = "" }) {
   return db.collection(collection).doc(id).update({
      data: {
         [field]: db.command.inc(count)
      }
   })
}

/**
 * 删除一条记录
 *   @params   collection   集合名称
 *             id           数据id
 *             count       每次增长数量  类型：Number
 * **/

function remove({ collection = "", where = {} }) {
   return db.collection(collection).where(where).remove()
}

function getIn({ collection = "", field = "", condition = [] }) {
   return db.collection(collection).where({
      [field]: db.command.in(condition)
   }).get()
}

/**
 * 模糊查询
 * 
 * 
*/
function search({ collection = "", field = "", keyword = "" }) {
   return db.collection(collection).where({
      [field]: db.RegExp({
         regexp: keyword,
         options: "i"
      })
   }).get()

}


function updateById({collection="",id="",data={}}){
   return db.collection(collection).doc(id).update({
      data
   })
}

export { add, count, get, getById, inc, remove, getIn,search,updateById }